<?php
App::uses('TiposProdutosController', 'Controller');


class TestTiposProdutosController extends TiposProdutosController {

	public $autoRender = false;

	public function redirect($url, $status = null, $exit = true) {
		$this->redirectUrl = $url;
	}
}


class TiposProdutosControllerTestCase extends ControllerTestCase {

	public $fixtures = array('app.tipos_produto', 'app.produto');

/**
 * setUp method
 *
 * @return void
 */
	public function setUp() {
		parent::setUp();
		$this->TiposProdutos = new TestTiposProdutosController();
		$this->TiposProdutos->constructClasses();
	}

/**
 * tearDown method
 *
 * @return void
 */
	public function tearDown() {
		unset($this->TiposProdutos);

		parent::tearDown();
	}

	
	public function testIndex() {
		$result = $this->testAction('/tipos_produtos/index');
		debug($result);
	}

	public function testViewVazio() {
		$this->setExpectedException("NotFoundException");
		$result = $this->testAction('/tipos_produtos/view');
		debug($result);
	}
	
	public function testViewNaoExiste() {
		$this->setExpectedException("NotFoundException");
		$result = $this->testAction('/tipos_produtos/view/0');
		debug($result);
	}
	
	public function testViewCorreto(){
		$result = $this->testAction('/tipos_produtos/view/1');
		debug($result);
	} 

	/*********** ADD ***********/
	
	public function testAddErrado() {
		$data = array(
			'TiposProduto'=>array(
				'categoria_pai'=>null,
				'produto'=>null // Não pode ser vazio
			)
		);
		$result = $this->testAction('/tipos_produtos/add', array('data'=>$data));
		debug($result);
	}
	
	public function testAddCerto() {
		$data = array(
			'TiposProduto'=>array(
				'categoria_pai'=>4,
				'produto'=>'Smartphones'
			)
		);
		$result = $this->testAction('/tipos_produtos/add', array('data'=>$data));
		debug($result);
	}

	/************** EDIT *******************/
	
	public function testEditVazio() {
		$this->setExpectedException('NotFoundException');
		$result = $this->testAction('/tipos_produtos/edit');
		debug($result);
	}
	
	public function testEditCarregaDados() {
		$result = $this->testAction('/tipos_produtos/edit/2', array('method'=>'get'));
		debug($result);
	}
	
	public function testEditSalvaErro(){
		$data = array(
			'TiposProduto'=>array(
				'id'=>3,
				'produto'=>null
			)
		);
		$result = $this->testAction('/tipos_produtos/edit/3', array('data'=>$data));
		debug($result);
	}
	
	public function testEditSalvaCerto(){
		$data = array(
			'TiposProduto'=>array(
				'id'=>3,
				'categoria_pai'=>2
			)
		);
		$result = $this->testAction('/tipos_produtos/edit/3', array('data'=>$data));
		debug($result);
	}

	/**************** DELETE ***************/ 
	public function testDeleteNotPost() {
		$this->setExpectedException('MethodNotAllowedException');
		$result = $this->testAction('/tipos_produtos/delete/1', array('method'=>'get'));
		debug($result);
	}
	
	public function testDeleteNaoExiste() {
		$this->setExpectedException('NotFoundException');
		$result = $this->testAction('/tipos_produtos/delete/0');
		debug($result);
	}
	
	public function testDeleteCerto() {
		$result = $this->testAction('/tipos_produtos/delete/1');
		debug($result);
	}
}
